/**
 * TODO: Vložit licenci.
 */

package cz.enif.commander;

import java.util.List;

import cz.enif.commander.values.IValue;

/**
 * Instrukce zkompilovaného programu.
 *
 * @author Přemysl Fára
 */
public final class Command 
{
    //// CONSTRUCTORS ////

    /**
     * Konstruktor pro instrukce s daty.
     *
     * @param commandName Název příkazu.
     * @param params Parametry.
     */
    public Command(String commandName, List<IValue> params)
    {
        this.commandName = commandName;
        this.params = params;
    }

    //// PUBLIC ////

    /**
     * Vrací jméno příkazu.
     *
     * @return Jméno příkazu.
     */
    public String getName()
    {
        return this.commandName;
    }

    /**
     * Vrací parametry příkazu.
     *
     * @return Parametry příkazu, případně null, pokud příkaz žádné
     *   parametry nemá.
     */
    public List<IValue> getParams()
    {
        return this.params;
    }

    /**
     * Převede příkaz na tisknutelný řetězec.
     *
     * @return Příkaz převedený na tisknutelný řetězec.
     */
    @Override
    public String toString()
    {
    	if (this.commandName == null)
    	{
    		return "<null-command>";
    	}
    	
    	return this.commandName;
    }

    //// PRIVATE ////

    /** Kód instrukce. */
    private String commandName;

    /** Data. */
    private List<IValue> params;
}
